﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace Persistencia
{
    public class VideoInstitucionalPersistence
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="video"></param>
        public void InsertarVideo(VideoInstitucional video)
        {
            using (SearchDBEntities mydb = new SearchDBEntities())
            {
                mydb.VideoInstitucional.AddObject(video);
                mydb.SaveChanges();
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="idVideo"></param>
        /// <param name="idUsuario"></param>
        public void EliminarVideo(int idVideo, int idUsuario)
        {
            using (SearchDBEntities mydb = new SearchDBEntities())
            {
                VideoInstitucional video = mydb.VideoInstitucional.FirstOrDefault(v => v.Id == idVideo);
                video.Activo = false;
                TimeMgr.ITimeMgr mgr = new TimeMgr.TimeMgr();
                DateTime fecha = mgr.ObtenerFecha();
                video.Fecha_Ultima_Modificacion = fecha;
                video.Usuario_Ultima_Modificacion = idUsuario;
                mydb.SaveChanges();
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="idVideo"></param>
        /// <param name="nombre"></param>
        /// <param name="path"></param>
        /// <param name="idUsuario"></param>
        /// <param name="activo"></param>
        public void ModificarVideo(int idVideo, String nombre, String path, int idUsuario, bool activo)
        {
            using (SearchDBEntities mydb = new SearchDBEntities())
            {
                VideoInstitucional video = mydb.VideoInstitucional.FirstOrDefault(v => v.Id == idVideo);
                video.Nombre = nombre;
                video.Path = path;
                video.Usuario_Ultima_Modificacion = idUsuario;
                TimeMgr.ITimeMgr mgr = new TimeMgr.TimeMgr();
                DateTime fecha = mgr.ObtenerFecha();
                video.Fecha_Ultima_Modificacion = fecha;
                video.Activo = activo;
                mydb.SaveChanges();
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public List<VideoInstitucional> ObtenerVideos()
        {
            using (SearchDBEntities mydb = new SearchDBEntities())
            {
                List<VideoInstitucional> videos = mydb.VideoInstitucional.ToList();
                return videos;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="idVideo"></param>
        /// <returns></returns>
        public VideoInstitucional ObtenerVideo(int idVideo)
        {
            using (SearchDBEntities mydb = new SearchDBEntities())
            {
                VideoInstitucional video = mydb.VideoInstitucional.FirstOrDefault(v => v.Id == idVideo);
                return video;
            }
        }

        /// <summary>
        /// Activa un video marcado previamente como eliminado
        /// </summary>
        /// <param name="idVideo"></param>
        /// <param name="userId"></param>
        public void ActivarVideo(int idVideo, int userId)
        {
            using (SearchDBEntities mydb = new SearchDBEntities())
            {
                VideoInstitucional video = mydb.VideoInstitucional.FirstOrDefault(v => v.Id == idVideo);
                TimeMgr.ITimeMgr mgr = new TimeMgr.TimeMgr();
                DateTime fecha = mgr.ObtenerFecha();
                video.Activo = true;
                video.Fecha_Ultima_Modificacion = fecha;
                video.Usuario_Ultima_Modificacion = userId;
                mydb.SaveChanges();
            }
        }
    }
}
